package meta

import (
	"gitee.com/micro-plat/codeless/apiserver/meta/biz/meta"
	"github.com/micro-plat/hydra"
)

// SetConfHandle 设置配置项的HTTP处理函数
func SetConfHandle(ctx hydra.IContext) interface{} {
	if err := ctx.Request().Check("key", "value", "vtype"); err != nil {
		return err
	}
	tenantID := ctx.Request().GetInt("tenant_id")
	key := ctx.Request().GetString("key")
	value := ctx.Request().GetString("value")
	vtype := ctx.Request().GetInt("vtype")

	_, err := meta.AddConf(tenantID, key, value, meta.VType(vtype))
	if err != nil {
		return err
	}

	conf, err := meta.GetConfByKey(tenantID, key)
	if err != nil {
		return err
	}
	return conf
}

// GetConfByKeyHandle 根据key获取配置项的HTTP处理函数
func GetConfByKeyHandle(ctx hydra.IContext) interface{} {
	if err := ctx.Request().Check("key"); err != nil {
		return err
	}
	tenantID := ctx.Request().GetInt("tenant_id")
	key := ctx.Request().GetString("key")

	conf, err := meta.GetConfByKey(tenantID, key)
	if err != nil {
		return err
	}
	return conf
}

// GetConfHandle 根据key获取配置项的HTTP处理函数
func GetConfHandle(ctx hydra.IContext) interface{} {

	tenantID := ctx.Request().GetInt("tenant_id")
	conf, err := meta.GetJSONConfs(tenantID)
	if err != nil {
		return err
	}
	return conf
}

// GetConfListHandle 根据key获取配置项的HTTP处理函数
func GetConfListHandle(ctx hydra.IContext) interface{} {

	tenantID := ctx.Request().GetInt("tenant_id")
	conf, err := meta.GetConfs(tenantID)
	if err != nil {
		return err
	}
	return conf
}

// DeleteConfHandle 删除配置项的HTTP处理函数
func DeleteConfHandle(ctx hydra.IContext) interface{} {
	if err := ctx.Request().Check("key"); err != nil {
		return err
	}
	tenantID := ctx.Request().GetInt("tenant_id")
	key := ctx.Request().GetString("key")

	err := meta.DeleteConf(tenantID, key)
	if err != nil {
		return err
	}
	return nil
}
